package com.winsdom.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.winsdom.dto.ClaimDTO;
import com.winsdom.dto.PaymentDTO;
import com.winsdom.dto.PaymentReceiptDTO;
import com.winsdom.dto.RefundOrderDTO;
import com.winsdom.dto.ReceivePaymentDTO;
import com.winsdom.dto.resource.CancelClaimtQueryDTO;
import com.winsdom.entity.PaymentReceipt;
import com.baomidou.mybatisplus.extension.service.IService;
import com.winsdom.result.PageResult;
import com.winsdom.result.PageResult;
import com.winsdom.vo.PaymentReceiptVO;
import org.springframework.web.multipart.MultipartFile;
import com.winsdom.vo.BillDetailsVO;
import com.winsdom.vo.ReceivePaymentVO;
import com.winsdom.vo.resource.ClaimRecordVO;

import javax.validation.Valid;
import java.util.List;

/**
 * <p>
 * 收款记录表 服务类
 * </p>
 *
 * @author 
 * @since 2025-05-22
 */
public interface IPaymentReceiptService extends IService<PaymentReceipt> {

    /**
     * 通过条件分页查询收款记录
     * @param paymentReceiptDTO
     * 收款记录DTO
     * @return
     * 返回PageResult
     */
    PageResult getPaymentReceiptList(@Valid PaymentReceiptDTO paymentReceiptDTO);

    /**
     * 生成退款记录
     * @param refundOrderDTO
     * 退款记录DTO
     * @return
     * 返回生成结果
     */
    void refundWithSuccessStatus(@Valid RefundOrderDTO refundOrderDTO);

    /**
     * 删除收款记录
     * @param id
     * 收款记录id
     * 返回删除结果
     */
    void deletePaymentReceiptById(Long id);

    /**
     * 导入收款记录
     * @param file
     * 收款记录excel表
     */
    void importExcelToData(MultipartFile file);

    /**
     * 收款流水分页查询
     * @param paymentDTO
     * 收款流水DTO
     * @return
     * 返回PageResult
     */
    PageResult getCollectionRecord(PaymentDTO paymentDTO);

    Page<ClaimRecordVO> seleCancelClaimt(Integer pageNum, Integer pageSize, CancelClaimtQueryDTO queryDTO);

    void CancelClaim(List<Integer> paymentId);

    void Claim(ClaimDTO claimDTO);

    PageResult getReceivePaymentByBillsId(ReceivePaymentDTO receivePaymentDTO);

}
